/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2012/07/11
* File: Texture.h
* Blog: http://www.cnblogs.com/zengqh/
**/

#ifndef Texture_h__
#define Texture_h__

#include "../Core/Core.h"
#include "../Core/Declare.h"

/* 
 * very simple texture.
 */
class Texture
{
public:
	Texture();
	Texture(const std::string& path, bool is_mipmap);
	virtual ~Texture() {}

	virtual void setPath(const std::string& path);
	virtual void setMipmap(bool is_mipmap);

	virtual bool createTexture() = 0;
	
	virtual bool destroyTexture() = 0;

	virtual const std::string& getPath() const;
	virtual bool isMipmap() const;
	virtual TextureType getTextureType() const;

	virtual bool saveTexture(const std::string& path) = 0;

	virtual s32 getTextureWidth() const = 0;
	virtual s32 getTextureHeight() const = 0;

	virtual GLuint getTextureID() const = 0;

	virtual void active(s32 index) = 0;

protected:
	std::string			_path;
	bool				_is_mipmap;
	TextureType			_texture_type;
};
#endif    /* Texture_h__ */